/**
 * 简谱音符格式化工具
 */

export function formatNote(note) {
  if (!note) return '';

  // 基础音符处理
  let formatted = note.pitch || '0';
  
  // 添加附点
  if (note.dotted) {
    formatted += '.';
  }

  // 处理时值
  formatted += getDurationSymbol(note.duration);

  // 添加演奏记号
  if (note.articulation) {
    formatted += getArticulationSymbol(note.articulation);
  }

  // 添加八度标记
  if (note.octave) {
    formatted += getOctaveSymbol(note.octave);
  }

  return formatted;
}

// 获取时值符号
function getDurationSymbol(duration) {
  const map = {
    1: '—',   // 全音符
    2: '-',   // 二分音符
    4: '',    // 四分音符
    8: '﹏',  // 八分音符（使用波浪线符号）
    16: '═'   // 十六分音符
  };
  return map[duration] || '';
}

// 获取演奏法符号
function getArticulationSymbol(type) {
  const symbols = {
    staccato: '·',    // 断音
    tenuto: '～',     // 保持音
    accent: '>',      // 重音
    fermata: '⌒'      // 延长音
  };
  return symbols[type] || '';
}

// 获取八度符号
function getOctaveSymbol(octave) {
  if (octave > 0) return '̇'.repeat(octave);  // 高音点
  if (octave < 0) return '̥'.repeat(Math.abs(octave));  // 低音点
  return '';
}